package cn.walls1717.wallsmall.seckill.service;

import cn.walls1717.wallsmall.seckill.pojo.to.SeckillSkuRedisTO;

import java.util.List;

/**
 * @author walls1717
 * @since 2022/11/25 16:33
 **/
public interface SeckillService {

    /**
     * 上架最近三天的秒杀商品<br>
     * 今天 00:00:00 - 23:59:59 <br>
     * 明天 00:00:00 - 23:59:59 <br>
     * 后天 00:00:00 - 23:59:59 <br>
     */
    void uploadSeckillSkuLatest3Days();

    /**
     * 获取当前时间可以参与的秒杀商品信息
     *
     * @return 当前时间的所有秒杀商品
     */
    List<SeckillSkuRedisTO> listCurrentSeckillSkus();

    /**
     * 根据skuId获取相关的秒杀信息
     *
     * @param skuId skuId
     * @return 秒杀信息
     */
    SeckillSkuRedisTO getSkuSeckillInfo(Long skuId);

    /**
     * 秒杀下单逻辑
     *
     * @param killId 秒杀的id(秒杀场次id_商品skuId)
     * @param key 随机码
     * @param num 购买数量
     * @return 订单号(orderSn)
     */
    String seckill(String killId, String key, Integer num);
}
